SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO
CREATE PROCEDURE [dbo].[parMovimientosDocentesPorUsuario]

@FechaDesde VARCHAR(10),
@FechaHasta VARCHAR(10),
@DiasLimite INT,
@Usuario INT = NULL
 AS
SET NOCOUNT ON
SET DATEFORMAT DMY
DECLARE @NtUser VARCHAR(50)
SET @NtUser = ''
     
IF @Usuario IS NOT NULL 
   SELECT @NtUser = NTUser FROM tb_Usuarios WHERE idUsuario = @Usuario

SELECT CM.idCola,  CONVERT(VARCHAR(10),CM.Fecha,103) FechaRegistro, CONVERT(VARCHAR(10),CM.Fecha1,103) AltaoInicio,
   CONVERT(VARCHAR(10),CM.Fecha2,103) BajaoFin, CONVERT(VARCHAR(10),CM.FechaEjecucion,103) FechaEjecucion,  MD.Descripcion Movimiento,
	CASE CM.Movimiento  WHEN 1 THEN ABS(DATEDIFF(D, CM.Fecha , CM.Fecha1))+1 ELSE 0 END DiasAlta,
	CASE CM.Movimiento  WHEN 2 THEN ABS(DATEDIFF(D, CM.Fecha , CM.Fecha2))+1 ELSE 0 END DiasBaja,
	CASE CM.Movimiento  WHEN 3 THEN ABS(DATEDIFF(D, CM.Fecha , CM.Fecha1))+1 ELSE 0 END DiasLicencia,
	CASE CM.Movimiento  WHEN 5 THEN ABS(DATEDIFF(D, CM.Fecha , CM.Fecha2))+1 ELSE 0 END DiasFinLicencia,
	CASE CM.Movimiento  WHEN 10 THEN ABS(DATEDIFF(D, CM.Fecha , CM.Fecha1))+1 ELSE 0 END DiasFinContinuidad,
	Lic.Descripcion Licencia,
	Org.CUISE,  EC.Descripcion Estado, SR.Mnemo SitRevista,
	Ag.Documento, Ag.Apellido, Ag.Nombre ,
	CM.NTUserAutor,  CM.NTUserEjecutor, Usu.Nombre Usuario      
  FROM tb_ColaDeMovimientos CM
  INNER JOIN tb_Organizaciones Org ON Org.idOrganizaciones = CM.Organizacion 
  INNER JOIN tb_Agentes Ag ON AG.idAgente = CM.Agente
  INNER JOIN tb_MovimientosDocentes MD ON md.idMovimiento = CM.Movimiento  
  INNER JOIN tb_EstadosDeCola EC ON EC.idEstado = cm.Estado 
  INNER JOIN tb_SituacionRevista SR ON SR.idSituacionRevista = CM.SitRev 
  LEFT OUTER JOIN Tb_Licencias Lic ON Lic.idLicencia = Cm.Licencia 
  LEFT OUTER JOIN Tb_Usuarios Usu ON Usu.NtUser = CM.NTUserAutor
  WHERE CM.Estado IN (4, 5)  
    AND CM.Fecha > = @FechaDesde
    AND CM.Fecha < = @FechaHasta 
    AND NOT EXISTS (SELECT TOP 1 * FROM tb_PlazasDeMovimiento PM WHERE PM.idCola = cm.idCola  AND PM.RectificaA IS NOT NULL )
    AND ( 
	CASE CM.Movimiento  WHEN 1 THEN ABS(DATEDIFF(D, CM.Fecha , CM.Fecha1))+1 ELSE 0 END >= @DiasLimite 
	OR CASE CM.Movimiento  WHEN 2 THEN ABS(DATEDIFF(D, CM.Fecha , CM.Fecha2))+1 ELSE 0 END >= @DiasLimite 
	OR CASE CM.Movimiento  WHEN 3 THEN ABS(DATEDIFF(D, CM.Fecha , CM.Fecha1))+1 ELSE 0 END >= @DiasLimite 
	OR CASE CM.Movimiento  WHEN 5 THEN ABS(DATEDIFF(D, CM.Fecha , CM.Fecha2))+1 ELSE 0 END >= @DiasLimite 
	OR CASE CM.Movimiento  WHEN 10 THEN ABS(DATEDIFF(D, CM.Fecha , CM.Fecha1))+1 ELSE 0 END >= @DiasLimite 
              )
    AND ((@NtUser = '') OR (@NtUser <> '' AND CM.NtUserAutor = @NtUser)) 
  ORDER BY CM.NtUserAutor, MD.descripcion, CM.Fecha
GO
GRANT EXECUTE ON  [dbo].[parMovimientosDocentesPorUsuario] TO [PersonalDocente]
GRANT EXECUTE ON  [dbo].[parMovimientosDocentesPorUsuario] TO [PersonalDocenteDireccion]
GO
